import { AD_TYPE, FULLSCREEN_TYPE_THRESHOLD, RIGHTS_TYPE } from '@/constant'
import { MEDIA_TYPE } from '@/constant/publish'

function mediaAvailable(item) {
  if (item.need_rights !== RIGHTS_TYPE.PASS) return false
  if (item.author?.is_block) return false
  if (item.need_subscribe || item.need_buy) return false
  return true
}

export function isAd(item) {
  return item.type === AD_TYPE.VIDEO || item.type === AD_TYPE.PHOTO
}
export function isVideo(item) {
  return item.type === MEDIA_TYPE.VIDEO
}
export function isPhoto(item) {
  return item.type === MEDIA_TYPE.IMAGE
}
export function isMultiPhoto(item) {
  return isPhoto(item) && item.img_more
}
export function showVideo(item) {
  return isVideo(item) && mediaAvailable(item)
}

/**
 * 這裡的判斷是為了在帖子組件像是: MediaViewer.vue, Feed.vue
 * 在渲染視頻但視頻未解鎖時顯示預覽圖片而做的反向判斷。
 * 所以 mediaAvailable(item) 才會判斷 false 時為 truthy
 *
 * @param {*} item
 * @returns
 */
export function showPhotoOrFallback(item) {
  return isPhoto(item) || !mediaAvailable(item)
}
export function showPhoto(item) {
  return isPhoto(item) && mediaAvailable(item)
}
export function showLockMask(item) {
  return !mediaAvailable(item)
}
export function isFullscreenIcon(item) {
  if (isVideo(item)) return true
  if (!isMultiPhoto(item)) return true
  if (isPhoto(item) && item.img_more.length < FULLSCREEN_TYPE_THRESHOLD) return true
  return false
}
